﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using CoffeeSoft.App.General;
using CoffeeSoft.App.UserControl.General;
using CoffeeSoft.Contract.Models;
using CoffeeSoft.Contract.Services;
using CoffeeSoft.Service.Services;

namespace CoffeeSoft.App
{
    public partial class FrmArea : Form
    {
        private IServices service;
        public FrmArea()
        {
            service = new Services();
            InitializeComponent();
        }

        private void FrmArea_Load(object sender, EventArgs e)
        {
            LoadDataArea();
        }
         
        private List<AreaModel> ListArea = null;


        private void LoadDataArea()
        {
            try
            {





                ListArea = service.ListAllArea();
                dtgArea.DataSource = ListArea;
                if (gridView1.RowCount > 0)
                {

                    AreaModel Area = (AreaModel)gridView1.GetFocusedRow();
                    txtAreaID.Text = Area.AreaId;
                    txtAreaName.Text = Area.AreaName;

                }
            }
            catch (Exception)
            {

                return;
            }

        }
        private void RefreshDataArea()
        {
            try
            {
                gridView1.RefreshData();

            }
            catch (Exception)
            {

                return;
            }
        }


        private void btnAdd_Click(object sender, EventArgs e)
        {
            try
            {


                if (btnAdd.Text == "THÊM MỚI")
                {
                    general.ChangeButtonStatus("insert", btnAdd, btnUpdate, btnDelete);
                    txtAreaID.Text = "";
                    txtAreaName.Text = "";
                    txtAreaID.Enabled = true;
                    txtAreaName.Enabled = true;
                    return;

                }
                if (btnAdd.Text == "LƯU")
                {

                    if (!Validator.IsNull(Validator.TrimAll(txtAreaID.Text)))
                    {
                        MessageBox.Show("Mã khu vực không thể bỏ trống");
                        return;
                    }

                    if (!Validator.IsNull(txtAreaName.Text))
                    {
                        MessageBox.Show("Tên khu vực không thể bỏ trống");
                        return;
                    }

                    // if (ListArea.Exists(p => p.AREAID.Equals("") && p.AREANAME.Equals("")))
                    if (ListArea.Exists(p => p.AreaId.Equals(Validator.TrimAll(txtAreaID.Text))))
                    {
                        MessageBox.Show("Mã khu vực này [" + txtAreaID.Text + "] đã tồn tại hãy chọn tên khác", "Thông báo");
                        return;
                    }
                    else if (ListArea.Exists(p => p.AreaName.Equals(txtAreaName.Text.TrimStart().TrimEnd())))
                    {
                        MessageBox.Show("Tên khu vực này [" + txtAreaName.Text + "] đã tồn tại hãy chon tê khác", "Thông báo");
                        return;
                    }

                    else
                    {
                        if (service.SaveOrUpdateArea(InputData(), true) != null)
                        {
                            ListArea.Add(InputData());
                            MessageBox.Show("Thêm mới thành công", "Thông báo");
                            txtAreaID.Enabled = false;
                            txtAreaName.Enabled = false;
                            RefreshDataArea();
                            general.ChangeButtonStatus("insert", btnAdd, btnUpdate, btnDelete);
                        }

                    }


                }
                else
                    MessageBox.Show("Thêm mới thất bại vui lòng kiểm tra lại dữ liệu ", "Thông báo");
            }
            catch (Exception)
            {

                return;
            }



        }

        private AreaModel InputData()
        {
            var areaModel = new AreaModel();
            areaModel.AreaId = Validator.TrimAll(txtAreaID.Text);
            areaModel.AreaName = txtAreaName.Text.TrimStart().TrimEnd();
            areaModel.EffectiveFromDate = DateTime.Now;
            areaModel.DateCreate = DateTime.Now;
            
            areaModel.UserCreate = general.userName;
            return areaModel;
        }

        private void btnUpdate_Click(object sender, EventArgs e)
        {
            try
            {

                if (btnUpdate.Text == "CẬP NHẬT")
                {
                    general.ChangeButtonStatus("update", btnAdd, btnUpdate, btnDelete);
                    txtAreaID.Enabled = false;
                    txtAreaName.Enabled = true;

                    return;

                }
                else
                    if (btnUpdate.Text == "HỦY")
                    {
                        general.ChangeButtonStatus("insert", btnAdd, btnUpdate, btnDelete);
                        txtAreaID.Enabled = false;
                        txtAreaName.Enabled = false;

                    }
                    else if (btnUpdate.Text == "LƯU")
                    {

                        if (!Validator.IsNull(txtAreaName.Text))
                        {
                            MessageBox.Show("Tên khu vực không thể bỏ trống");
                            return;
                        }

                        if (service.SaveOrUpdateArea(InputData(), false) != null)
                        {
                            MessageBox.Show("Cập nhật thành công", "Thông báo");
                            LoadDataArea();
                            general.ChangeButtonStatus("update", btnAdd, btnUpdate, btnDelete);
                            txtAreaID.Enabled = false;
                            txtAreaName.Enabled = false;
                        }
                    }
                    else
                        MessageBox.Show("Cập nhật thất bại vui lòng kiểm tra lại dữ liệu ", "Thông báo");
            }
            catch (Exception)
            {

                return;
            }


        }

        private void btnDelete_Click(object sender, EventArgs e)
        {
            try
            {


                if (btnDelete.Text == "HỦY")
                {
                    general.ChangeButtonStatus("update", btnAdd, btnUpdate, btnDelete);
                    txtAreaID.Enabled = false;
                    txtAreaName.Enabled = false;
                }
                else if (btnDelete.Text == "XÓA")
                {
                    if (MessageBox.Show(MessageShow.delConfirmInfo, MessageShow.delConfirmCaption, MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
                    {
                        service.DeleteArea(InputData());
                        LoadDataArea();
                        general.ChangeButtonStatus("delete", btnAdd, btnUpdate, btnDelete);
                    }
                }
                else
                    return;
            }
            catch (Exception)
            {

                return;
            }



        }

        private void gridView1_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e)
        {
            try
            {
                if (e.RowHandle >= 0)
                {
                    AreaModel Area = (AreaModel)gridView1.GetFocusedRow();
                    txtAreaID.Text = Area.AreaId;
                    txtAreaName.Text = Area.AreaName;
                }
            }
            catch (Exception)
            {

                return;
            }

        }

       

        

        
    }
}
